package ar.edu.utn.frba.dds.opendesigners.ui.arena;

import org.uqbar.arena.actions.MessageSend;
import org.uqbar.arena.layout.ColumnLayout;
import org.uqbar.arena.layout.VerticalLayout;
import org.uqbar.arena.widgets.Button;
import org.uqbar.arena.widgets.Panel;
import org.uqbar.arena.widgets.tables.Column;
import org.uqbar.arena.widgets.tables.Table;
import org.uqbar.arena.windows.Window;
import org.uqbar.arena.windows.WindowOwner;

import ar.edu.utn.frba.dds.opendesigners.dominio.GestionUsuario;
import ar.edu.utn.frba.dds.opendesigners.resultados.AsientoGridItem;

@SuppressWarnings("serial")
public abstract class HistorialUsuarioWindow extends Window<GestionUsuario> {
		
	//constructor principal para la ventana
	public HistorialUsuarioWindow(WindowOwner parent, GestionUsuario model) {
		super(parent, model);
	}

	//	Crea el contenido de la ventana
	@Override
	public void createContents(Panel mainPanel) {
		//Creo el Layout principal
		mainPanel.setLayout(new VerticalLayout());
		//Crea el contenido de la ventana
		this.crearContenidoPrincipal(mainPanel);
	}



	private void crearContenidoPrincipal(Panel mainPanel) {
		//Crea el display principal de información para el usuario
		this.crearDisplayInformacion(mainPanel);
		//Crea la grilla con la información del historial
		this.crearGrillaHistorial(mainPanel);
		//Crea los botones necesarios para la ventana con la acciones correspondietes
		this.crearBotonera(mainPanel);
	}



	private void crearBotonera(Panel mainPanel) {
		//Boton para cerrar la ventana
		Panel panelBotones = new Panel(mainPanel);
		panelBotones.setLayout(new ColumnLayout(2));
		new Button(panelBotones).setCaption("Cerrar").onClick( new MessageSend(this, "cerrar") );
	}



	private void crearGrillaHistorial(Panel mainPanel) {
		// Creo una nueva grilla, instancia del clase Tabla
		Table<AsientoGridItem> detalleHistorial = new Table<AsientoGridItem>(mainPanel, AsientoGridItem.class);
		//Dimensiones de la grilla
		detalleHistorial.setHeigth(200);
		detalleHistorial.setWidth(350);
				
		this.bindingConDetalleHistorial(detalleHistorial);
		
		//Creamos el contenido y lo bindeamos
		//Campo de fecha de salida
		new Column<AsientoGridItem>(detalleHistorial).setTitle("Salida").bindContentsToProperty("fechaSalida");
		//Nombre de la aerolinea a la que pertenece el asiento
		new Column<AsientoGridItem>(detalleHistorial).setTitle("Aerolinea").bindContentsToProperty("nombreAerolinea");
		//Numero de vuelo
		new Column<AsientoGridItem>(detalleHistorial).setTitle("Vuelo").bindContentsToProperty("numeroVuelo");
		//Numero de asiento
		new Column<AsientoGridItem>(detalleHistorial).setTitle("Asiento").bindContentsToProperty("numeroAsiento");
		//Precio del asiento
		new Column<AsientoGridItem>(detalleHistorial).setTitle("Precio").bindContentsToProperty("precio");
		
	}


	// ********************************************************
	// **	Metodos Abstracto
	// ********************************************************

	abstract void bindingConDetalleHistorial(Table<AsientoGridItem> detalleHistorial);

	abstract void crearDisplayInformacion(Panel mainPanel);
	
	// ********************************************************
	// ** 	Acciones
	// ********************************************************
	// Recordar, deben ser publicos estos metodos
	
	public void cerrar() {
		//new MessageBox(this, 1).setMessage("acción de cerrar").open();
		//Uso el metodo cerrar definido en la clase Window
		super.close();
	}

}
